<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  </head>
  <body>
    <script>
      // $.ajax({url: '', method: '', success: function () {}})
      //封装ajax fetch({}).then(成功回调, 失败回调)  axios().then(成功回调, 失败回调)
      function ajaxPromise(obj) {
        // obj = {url: '', method: ''}
        // {...obj, success: function () {}} ==》 {url: '', method: ''}
        // 1. 创建promise实例 然后返回
        var a = 10
        return new Promise(function (resolve, reject) {
          // 无论以后你封装什么  都是固定套路就是在这里写 业务逻辑
          $.ajax({
            ...obj,
            success: function (data) {
              // console.log(data)
              if (data.status === 0) {
                resolve(data)
              } else {
                reject(data)
              }
            },
            error: function (err) {
              // console.log(err)
              reject(err)
            }
          })
        })
      }
      ajaxPromise({url: 'http://www.liulongbin.top:3005/api/getprodlist', method: 'get'})
      .then(function (res) {
        // 发送请求成功后的回调
        console.log(res, '自己封装promise版本的ajax')
      })
      .catch(err => console.log(err))

      // 接下来给你演示下不知道黑科技 比较高版本jQuery内部也实现promise的封装
      $.ajax({url: 'http://www.liulongbin.top:3005/api/getlunbo', method: 'get'})
      .then(res => console.log(res, 'jquery中then'))
      .catch(err => console.log(err))
    </script>
  </body>
</html>
